/*
 * To change this license header, choose License Headers in Project Properties.
 * To change this template file, choose Tools | Templates
 * and open the template in the editor.
 */

package py.com.sole.solesys;

/**
 * 
 *
 * @author cbustamante
 */

import java.io.Serializable;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ManagedProperty;
import javax.faces.bean.SessionScoped;
import javax.faces.model.SelectItem;

import org.primefaces.event.FlowEvent;

import py.com.sole.dao.DaoFactory;
import py.com.sole.dao.impl.ClaseImpl;
import py.com.sole.dto.AlumnoPersonaDTO;
import py.com.sole.model.Alumno;
import py.com.sole.model.Clase;
import py.com.sole.model.Estado;
import py.com.sole.model.Profesor;
import py.com.sole.model.Materia;
import py.com.sole.util.DateUtil;

@ManagedBean
@SessionScoped
public class ClasesBean implements Serializable  {
    private static final long serialVersionUID = 1L;
    private String alumno;
    private String profesor;
    private String materia;
    private List<SelectItem> listaAlumnos;
    private List<SelectItem> listaProfesores;
    private List<SelectItem> listaMateria;
    private List<Estado> listaEstados; 
    private Clase clase;
    private int horaDesde;
    private int horaHasta;
    private int minDesde;
    private int minHasta;
   
   
    @PostConstruct
    private void init() {
    	clase = new Clase();
      //  listaAlumnos = DaoFactory.getAlumno().getAlumnos();             
       // listaProfesores = DaoFactory.getProfesor().getProfesores();
       // listaMateria = DaoFactory.getMateria().getMaterias();
        listaEstados = DaoFactory.getEstado().getEstados();
        System.out.println("Inicializando clases");
        Date date = new Date();   // given date
        Calendar calendar = GregorianCalendar.getInstance(); // creates a new calendar instance
        calendar.setTime(date);   // assigns calendar to given date 
        calendar.get(Calendar.HOUR_OF_DAY); // gets hour in 24h format
        calendar.get(Calendar.HOUR);        // gets hour in 12h format
        calendar.get(Calendar.MONTH);
        this.horaDesde = calendar.get(Calendar.HOUR_OF_DAY);
        this.horaHasta = calendar.get(Calendar.HOUR_OF_DAY) + 1; 
        
    }

    public List<String> completeText(String query) {
        List<String> results = new ArrayList<String>();
        List<Alumno> resAlumnos = DaoFactory.getAlumno().filtrarAlumnos(query);
        System.out.println("CompleteText:" + query);
        if (null != resAlumnos)
        {
	        for (Alumno alu : resAlumnos)
	        {
	        	results.add(alu.getPersona().getNombre() + " " + alu.getPersona().getApellido());
	        	System.out.println("Resultados:" + alu.getPersona().getNombre() + " " + alu.getPersona().getApellido());	
	        }
	        
        }
        else
        {
        	System.out.println("CompleteText: no " );
        }
        
        return results;
    }
     
    public String getAlumno() {
        return alumno;
    }

    public void setAlumno(String alumno) {
        this.alumno = alumno;
    }

    public String getProfesor() {
        return profesor;
    }

    public void setProfesor(String profesor) {
        this.profesor = profesor;
    }

    public String getMateria() {
        return materia;
    }

    public void setMateria(String materia) {
        this.materia = materia;
    }

    public List<SelectItem> getListaAlumnos() {
    	listaAlumnos = new ArrayList<SelectItem>();
    	List<Alumno> alumnos = DaoFactory.getAlumno().getAlumnos();
    	
    	for (Alumno alu : alumnos)
    	{
    		listaAlumnos.add(new SelectItem(alu.getId(), alu.getPersona().getNombre() + " " + alu.getPersona().getApellido()));
    	}
    	    	
        return listaAlumnos;
    }

    public void setListaAlumnos(List<SelectItem> listaAlumnos) {
        this.listaAlumnos = listaAlumnos;
    }



    public List<SelectItem> getListaProfesores() {
    	
    	listaProfesores  = new ArrayList<SelectItem>();
    	List<Profesor> profes = DaoFactory.getProfesor().getProfesores();
    	
    	for (Profesor prof : profes)
    	{
    		listaProfesores.add(new SelectItem(prof.getId(), prof.getPersona().getNombre() + " " + prof.getPersona().getApellido()));
    	}
    	    	        
        return listaProfesores;
    }

    public void setListaProfesores(List<SelectItem> listaProfesores) {
        this.listaProfesores = listaProfesores;
    }

    public List<SelectItem> getListaMateria() {
    
    	listaMateria  = new ArrayList<SelectItem>();
    	List<Materia> materias = DaoFactory.getMateria().getMaterias();
    	
    	for (Materia mat : materias)
    	{
    		listaMateria.add(new SelectItem(mat.getId(), mat.getDescripcion() ));
    	}
    	    	        
        return listaMateria;               
    }

    public void setListaMateria(List<SelectItem> listaMateria) {
        this.listaMateria = listaMateria;
    }

	public Clase getClase() {
		return clase;
	}

	public void setClase(Clase clase) {
		this.clase = clase;
	}
    
	public int getHoraDesde() {
		return horaDesde;
	}

	public void setHoraDesde(int horaDesde) {
		this.horaDesde = horaDesde;
	}

	public int getHoraHasta() {
		return horaHasta;
	}

	public void setHoraHasta(int horaHasta) {
		this.horaHasta = horaHasta;
	}

	public int getMinDesde() {
		return minDesde;
	}

	public void setMinDesde(int minDesde) {
		this.minDesde = minDesde;
	}

	public int getMinHasta() {
		return minHasta;
	}

	public void setMinHasta(int minHasta) {
		this.minHasta = minHasta;
	}	
	
	public List<Estado> getListaEstados() {
		return listaEstados;
	}

	public void setListaEstados(List<Estado> listaEstados) {
		this.listaEstados = listaEstados;
	}

	public String  save()
	{			
		//Save Clases
		
		this.clase.setHoraInicio(DateUtil.getDateFromHour(String.valueOf(this.horaDesde),String.valueOf(this.minDesde)));
		this.clase.setHoraFin(DateUtil.getDateFromHour(String.valueOf(this.horaHasta) ,String.valueOf( this.minHasta)));
		this.clase.setFecha(new Date());
		this.clase.setDescripcion("Clases");
		this.clase.setConfirmAlumno((short)0);
		this.clase.setConfirmProfesor((short)0);
		Alumno alu=  DaoFactory.getAlumno().getAlumnoById(Integer.parseInt(alumno));
		Profesor prof = DaoFactory.getProfesor().getProfesorById(Integer.parseInt(profesor));
		Materia mat = DaoFactory.getMateria().getMateriaById(Integer.parseInt(materia));
		
		this.clase.setAlumno(alu);
		this.clase.setProfesore(prof);
		this.clase.setMateria(mat);
		
		ClaseImpl claseMng = new ClaseImpl();
		System.out.println("CLASE:Alumno:" + clase.getAlumno().getPersona().getNombre());
		System.out.println("CLASE:Prof:" + clase.getProfesore().getPersona().getNombre());
		System.out.println("CLASE:Materia:" + clase.getMateria().getDescripcion());
		System.out.println("CLASE:HoraInicio:" + clase.getHoraInicio());
		System.out.println("CLASE:HoraInicio:" + clase.getHoraInicio());		
		claseMng.addClase(clase);
		
		return "home";
	}
    
    
    
    

}
